# run_all.py
"""
🚀 DBGuardian 一键启动脚本
功能：
1. 生成合成数据
2. 训练 AI 模型
3. 演示实时检测
4. 启动 Dashboard（可选）
"""

import subprocess
import sys
import os


def run_step(name, cmd):
    print(f"\n{'=' * 50}")
    print(f"🚀 正在执行：{name}")
    print(f"   {' '.join(cmd) if isinstance(cmd, list) else cmd}")
    print(f"{'=' * 50}")
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode != 0:
        print("❌ 错误：")
        print(result.stderr)
        sys.exit(1)
    else:
        print(result.stdout)
    return result


def main():
    print("🎯 DBGuardian：AI 长事务检测系统 启动中...\n")

    # Step 1: 生成数据
    run_step("Step 1: 生成合成事务日志数据", [sys.executable, "generate_data.py"])

    # Step 2: 训练模型
    run_step("Step 2: 训练 AI 异常检测模型", [sys.executable, "train_model.py"])

    # Step 3: 实时预测演示
    run_step("Step 3: 演示 AI 检测长事务", [sys.executable, "predict.py"])

    # Step 4: 启动 Dashboard
    if input("\n👉 是否启动可视化仪表盘？(y/n): ").lower().strip() == 'y':
        if os.path.exists("dashboard.py"):
            run_step("Step 4: 启动 Streamlit 仪表盘", ["streamlit", "run", "dashboard.py"])
        else:
            print("⚠️  dashboard.py 未找到，请确保文件存在。")

    print("\n🎉 所有步骤完成！系统就绪。")


if __name__ == "__main__":
    main()